home *** CD-ROM | disk | FTP | other *** search
- % PENCIL printing Package
- % general procedures
- % calculate bounding box of filled path
- /fbb {
- gsave
- initmatrix
- newpath cp
- pathbbox
- grestore
- } def
- % calculate bounding box of filled&stroked path
- /fsbb {
- fbb /ury exch def /urx exch def /lly exch def /llx exch def
- /linw linw 1 add def
- llx linw sub lly linw sub urx linw add ury linw add
- } def
- % take bounding box on the stack and enlarge it in each of the four directions
- /enlbb {
- /dury exch def /durx exch def /dlly exch def /dllx exch def
- /ury exch def /urx exch def /lly exch def /llx exch def
- llx dllx add lly dlly add urx durx add ury dury add
- } def
-
- % path procedures
- /circle {
- nctrl 2 ge {
- /x ctrl 0 get def
- /y ctrl 1 get def
- nctrl 3 ge {
- matrix currentmatrix
- x y translate
- 1 ctrl 5 get y sub ctrl 2 get x sub div scale
- 0 0
- ctrl 2 get x sub
- 0 360 arc closepath
- setmatrix
- } {
- x y
- ctrl 2 get x sub 2 exp
- ctrl 3 get y sub 2 exp add sqrt
- 0 360 arc closepath } ifelse
- } {
- nctrl 1 eq {
- ctrl 0 get
- ctrl 1 get
- 20
- 0 360 arc closepath
- } {
- 0 0 moveto
- } ifelse
- } ifelse
- } def
-
- /font (Helvetica) def
- /fontsize 24 def
- /text () def
-
- /charP {
- udt
- nctrl 1 ge {
- ctrl 0 get ctrl 1 get moveto
- font findfont fontsize scalefont setfont
- text false charpath
- } if
- /font (Helvetica) def
- /fontsize 24 def
- /text () def
- } def
-
- /function { 0 } def
- /funcP {
- udt
- nctrl 2 ge {
- nctrl 4 ge {
- /ox ctrl 4 get def /oy ctrl 5 get def
- /sx ctrl 6 get ox sub def /sy ctrl 7 get oy sub def
- /stx ctrl 0 get ox sub sx div def
- /endx ctrl 2 get ox sub sx div def
- } {
- /ox ctrl 0 get def /oy ctrl 1 get def
- /stx 0 def /sx 1 def /sy 1 def /endx ctrl 2 get ctrl 0 get sub def
- } ifelse
- /x stx def ox x sx mul add oy function sy mul add moveto
- /res 2 sx div def
- stx res add res endx { /x exch def
- ox x sx mul add oy function sy mul add lineto
- } for
- } { 0 0 moveto } ifelse
- /function { 0 } def
- } def
-
- /hermite {
- nctrl 4 ge {
- ctrl 0 get ctrl 1 get moveto
- 0 1 nctrl 2 div cvi 2 sub { /i exch 4 mul def
- ctrl i 2 add get ctrl i 3 add get
- ctrl i 4 add get 2 mul ctrl i 6 add get sub ctrl i 5 add get 2 mul ctrl i 7 add get sub
- ctrl i 4 add get ctrl i 5 add get curveto
- } for
- ctrl nctrl 1 sub 2 mul get ctrl nctrl 1 sub 2 mul 1 add get
- ctrl 0 get 2 mul ctrl 2 get sub ctrl 1 get 2 mul ctrl 3 get sub
- ctrl 0 get ctrl 1 get curveto
- closepath
- } { 0 0 moveto } ifelse
- } def
-
- /hermiteO {
- nctrl 4 ge {
- ctrl 0 get ctrl 1 get moveto
- 0 1 nctrl 2 div cvi 2 sub { /i exch 4 mul def
- ctrl i 2 add get ctrl i 3 add get
- ctrl i 4 add get 2 mul ctrl i 6 add get sub ctrl i 5 add get 2 mul ctrl i 7 add get sub
- ctrl i 4 add get ctrl i 5 add get curveto
- } for
- } { 0 0 moveto } ifelse
- } def
-
-
- % Bezier curve (2 rulers per point)
-
- /bezierOld {
- nctrl 6 ge {
- ctrl 0 get ctrl 1 get moveto
- 0 1 nctrl 3 div cvi 2 sub { /i exch 6 mul def
- ctrl i 2 add get ctrl i 3 add get
- ctrl i 4 add get ctrl i 5 add get
- ctrl i 6 add get ctrl i 7 add get curveto
- } for
- ctrl nctrl 2 sub 2 mul get ctrl nctrl 2 sub 2 mul 1 add get
- ctrl nctrl 1 sub 2 mul get ctrl nctrl 1 sub 2 mul 1 add get
- ctrl 0 get ctrl 1 get curveto
- closepath
- } { 0 0 moveto } ifelse
- } def
-
- /bezier {
- nctrl 4 ge {
- ctrl 0 get ctrl 1 get moveto
- 0 1 nctrl 2 add 3 div cvi 2 sub { /i exch 6 mul def
- ctrl i 2 add get ctrl i 3 add get
- ctrl i 4 add get ctrl i 5 add get
- ctrl i 6 add get ctrl i 7 add get curveto
- } for
- /N nctrl 3 sub 3 div cvi 3 mul def
- N nctrl 3 sub eq {
- /N N 1 add 2 mul def
- ctrl N get ctrl N 1 add get
- ctrl N 2 add get ctrl N 3 add get
- ctrl 0 get ctrl 1 get curveto
- } if
- closepath
- } { 0 0 moveto } ifelse
- } def
-
- /bezierO {
- nctrl 4 ge {
- ctrl 0 get ctrl 1 get moveto
- 0 1 nctrl 2 add 3 div cvi 2 sub { /i exch 6 mul def
- ctrl i 2 add get ctrl i 3 add get
- ctrl i 4 add get ctrl i 5 add get
- ctrl i 6 add get ctrl i 7 add get curveto
- } for
- } { 0 0 moveto } ifelse
- } def
-
- /rect {
- nctrl 2 ge {
- /x1 ctrl 0 get def /y1 ctrl 1 get def /x2 ctrl 2 get def /y2 ctrl 3 get def
- x1 y1 moveto x2 y1 lineto x2 y2 lineto x1 y2 lineto closepath
- } { 0 0 moveto } ifelse
- } def
-
- /rectwin {
- nctrl 2 ge {
- /x1 ctrl 0 get def /y1 ctrl 1 get def /x2 ctrl 2 get def /y2 ctrl 3 get def
- x1 y1 moveto x2 y1 lineto x2 y2 lineto x1 y2 lineto closepath
- nctrl 3 ge {
- /dx ctrl 2 get ctrl 4 get sub def /dy ctrl 3 get ctrl 5 get sub def
- x1 dx add y1 dy add moveto x1 dx add y2 dy sub lineto x2 dx sub y2 dy sub lineto x2 dx sub y1 dy add lineto closepath
- } if
- } { 0 0 moveto } ifelse
- } def
-
- /polygon {
- nctrl 2 ge {
- ctrl 0 get ctrl 1 get moveto
- 1 1 nctrl 1 sub { /i exch 2 mul def
- ctrl i get ctrl i 1 add get lineto } for
- closepath
- } { 0 0 moveto } ifelse
- } def
-
- /polygonO {
- nctrl 2 ge {
- ctrl 0 get ctrl 1 get moveto
- 1 1 nctrl 1 sub { /i exch 2 mul def
- ctrl i get ctrl i 1 add get lineto } for
- } { 0 0 moveto } ifelse
- } def
-
- /arcP {
- nctrl 3 ge {
- /x ctrl 0 get def /y ctrl 1 get def
- x y moveto
- x y
- /dx1 ctrl 2 get x sub def
- /dy1 ctrl 3 get y sub def
- /dx2 ctrl 4 get x sub def
- /dy2 ctrl 5 get y sub def
- dx1 2 exp dy1 2 exp add sqrt
- dy1 dx1 atan
- dy2 dx2 atan
- arc closepath
- } { 0 0 moveto } ifelse
- } def
-
- /arcPO {
- nctrl 3 ge {
- /x ctrl 0 get def /y ctrl 1 get def
- x y
- /dx1 ctrl 2 get x sub def
- /dy1 ctrl 3 get y sub def
- /dx2 ctrl 4 get x sub def
- /dy2 ctrl 5 get y sub def
- dx1 2 exp dy1 2 exp add sqrt
- dy1 dx1 atan
- dy2 dx2 atan
- arc
- } { 0 0 moveto } ifelse
- } def
-
- /csize 10 def
- /rrect {
- udt
- nctrl 2 ge {
- /x1 ctrl 0 get def /y1 ctrl 1 get def /x2 ctrl 2 get def /y2 ctrl 3 get def
- x2 csize sub y1 csize add csize -90 0 arc
- x2 csize sub y2 csize sub csize 0 90 arc
- x1 csize add y2 csize sub csize 90 180 arc
- x1 csize add y1 csize add csize 180 270 arc closepath
- } { 0 0 moveto } ifelse
- /csize 10 def
- } def
-
- % drawing methods
- /drawFS {
- cl setrgbcolor
- cp
- gsave
- cfl
- grestore
- setrgbcolor
- cst
- } def
- /drawFSBB { fsbb } def
-
- /drawS {
- cl pop pop pop setrgbcolor
- cp
- cst
- } def
- /drawSBB { fsbb } def
-
- /drawF {
- cl setrgbcolor
- cp
- cfl
- pop pop pop
- } def
- /drawFBB { fbb } def
-
- /draw3D {
- cl setrgbcolor pop pop pop
- gsave
- -2 2 translate
- currenthsbcolor pop pop .5 1 sethsbcolor
- cp fill
- grestore
- gsave
- 2 -2 translate
- currenthsbcolor pop .2 sethsbcolor
- cp fill
- grestore
- cp cfl
- } def
- /draw3DBB { fsbb } def
-
- /draw3DShadow {
- cl setrgbcolor
- gsave
- 5 -5 translate
- .3 setgray
- cp fill
- grestore
- gsave
- -2 2 translate
- currenthsbcolor pop pop .5 1 sethsbcolor
- cp fill
- grestore
- gsave
- 2 -2 translate
- currenthsbcolor pop .2 sethsbcolor
- cp fill
- grestore
- cp cfl
- } def
- /draw3DShadowBB { fsbb 0 -5 5 0 enlbb } def
-
- /shadowgray .2 def
- /drawFSShadow {
- gsave
- 5 -5 translate
- udt shadowgray setgray /shadowgray .2 def
- cp
- fill
- grestore
- cl setrgbcolor
- cp
- gsave
- cfl
- grestore
- setrgbcolor
- cst
- } def
- /drawFSShadowBB { fsbb 0 -5 5 0 enlbb } def
-
- /drawSShadow {
- gsave
- 5 -5 translate
- udt shadowgray setgray /shadowgray .2 def
- cp
- cst
- grestore
- cl pop pop pop setrgbcolor
- cp
- cst
- } def
- /drawSShadowBB { fsbb 0 -5 5 0 enlbb } def
-
- /drawFShadow {
- gsave
- 5 -5 translate
- udt shadowgray setgray /shadowgray .2 def
- cp
- fill
- grestore
- cl setrgbcolor pop pop pop
- cp
- cfl
- } def
- /drawFShadowBB { fbb 0 -5 5 0 enlbb } def
-
- /drawV {
- gsave
- cl [/r1 /g1 /b1 /r2 /g2 /b2] SET
- /r2 r2 r1 sub def
- /g2 g2 g1 sub def
- /b2 b2 b1 sub def
- 0 qual 3 div 10 { /t exch 10 div def
- r1 t r2 mul add g1 t g2 mul add b1 t b2 mul add setrgbcolor
- cp fill
- 0 qual 3 div translate
- } for
- cp cfl
- grestore
- } def
- /drawVBB { fbb 0 0 0 10 enlbb } def
-
- /drawVD {
- gsave
- cl [/r1 /g1 /b1 /r2 /g2 /b2] SET
- /r2 r2 r1 sub def
- /g2 g2 g1 sub def
- /b2 b2 b1 sub def
- 0 qual 3 div 10 { /t exch 10 div def
- r1 t r2 mul add g1 t g2 mul add b1 t b2 mul add setrgbcolor
- cp fill
- 0 qual 3 div neg translate
- } for
- cp cfl
- grestore
- } def
- /drawVDBB { fbb 0 -10 0 0 enlbb } def
-
- /drawVS {
- gsave
- cl [/r1 /g1 /b1 /r2 /g2 /b2] SET
- /r2 r2 r1 sub def
- /g2 g2 g1 sub def
- /b2 b2 b1 sub def
- 0 qual 3 div 10 { /t exch 10 div def
- r1 t r2 mul add g1 t g2 mul add b1 t b2 mul add setrgbcolor
- cp fill
- qual 3 div dup translate
- } for
- cp cfl
- grestore
- } def
- /drawVSBB { fbb 0 0 10 10 enlbb } def
-
- /drawV3D {
- gsave
- cl [/r1 /g1 /b1 /r2 /g2 /b2] SET
- /r2 r2 r1 sub def
- /g2 g2 g1 sub def
- /b2 b2 b1 sub def
- 10 -10 translate
- 0 qual 3 div 9.9 { /t exch 10 div def
- r1 t r2 mul add g1 t g2 mul add b1 t b2 mul add setrgbcolor
- cp fill
- qual -3 div dup neg translate
- } for
- cl [/r2 /g2 /b2] SET pop pop pop
- /r2 r2 1 sub def
- /g2 g2 1 sub def
- /b2 b2 1 sub def
- -10 10 translate
- 0 qual 3 div 9.9 { /t exch 10 div def
- 1 t r2 mul add 1 t g2 mul add 1 t b2 mul add setrgbcolor
- cp fill
- qual 3 div dup neg translate
- } for
- r2 1 add g2 1 add b2 1 add setrgbcolor cp cfl
- grestore
- } def
- /drawV3DBB { fbb -10 -10 10 10 enlbb } def
-
- /drawV3D2 {
- gsave
- cl [/r1 /g1 /b1 /r2 /g2 /b2] SET
- /r2 r2 r1 sub def
- /g2 g2 g1 sub def
- /b2 b2 b1 sub def
- 13 -13 translate
- /qual3 qual 3 div def
- 0 qual3 3 { /t exch 1 exch 3 div sub def
- r1 r2 t mul add g1 g2 t mul add b1 b2 t mul add setrgbcolor
- cp fill
- qual3 neg dup neg translate
- } for
- 0 qual3 9.9 { /t exch 10 div def
- r1 t r2 mul add g1 t g2 mul add b1 t b2 mul add setrgbcolor
- cp fill
- qual3 neg dup neg translate
- } for
- cl [/r2 /g2 /b2] SET pop pop pop
- /r2 r2 1 sub def
- /g2 g2 1 sub def
- /b2 b2 1 sub def
- -10 10 translate
- 0 qual3 9.9 { /t exch 10 div def
- 1 t r2 mul add 1 t g2 mul add 1 t b2 mul add setrgbcolor
- cp fill
- qual3 dup neg translate
- } for
- grestore
- r2 1 add g2 1 add b2 1 add setrgbcolor cp cfl
- } def
- /drawV3D2BB { fbb -10 -13 13 10 enlbb } def
-
- /drawN3D {
- cl setrgbcolor pop pop pop
- gsave
- -5 5 translate
- currenthsbcolor pop pop .5 1 sethsbcolor
- cp fill
- grestore
- gsave
- 5 -5 translate
- currenthsbcolor pop .2 sethsbcolor
- cp fill
- grestore
- cp cfl
- } def
- /drawN3DBB { fbb -5 -5 5 5 enlbb } def
-
- /drawSF {
- cl 6 3 roll setrgbcolor
- cp gsave cst grestore
- setrgbcolor cfl
- } def
- /drawSFBB { fsbb } def
-
- % stroke methods
- /dashpattern [5 5] def
- /dashed {
- udt
- dashpattern 0 setdash
- stroke
- [] 0 setdash
- /dashpattern [5 5] def
- } def
-
- /doubleline {
- gsave currentlinewidth 2 mul setlinewidth stroke grestore
- 1 setgray stroke
- } def
-
- /gstroke {
- /lw currentlinewidth def
- cl [/r1 /g1 /b1 /r2 /g2 /b2] SET
- /r1 r1 r2 sub def
- /g1 g1 g2 sub def
- /b1 b1 b2 sub def
- 1 -.1 0 { /t exch def
- t lw mul setlinewidth
- r2 r1 t mul add g2 g1 t mul add b2 b1 t mul add setrgbcolor
- gsave stroke grestore
- } for
- newpath
- } def
-
- % fill methods
- /qual 1 def
-
- /spektrum {
- qual 30 verlaufFILL
- } def
-
- /SET {
- /ar exch def
- ar length 1 sub -1 0 {
- ar exch get exch def
- } for
- } def
-
- /doClip {
- gsave newpath
- initmatrix cp pathbbox grestore
- [/llx /lly /urx /ury] SET
- gsave
- clip newpath
- llx lly translate
- /width urx llx sub def
- /height ury lly sub def
- } def
-
- /endClip {
- grestore
- newpath
- } def
-
- /gridsize 5 def
- /grid {
- udt
- doClip
- 0 gridsize height { 0 exch moveto width 0 rlineto stroke
- } for
- 0 gridsize width { 0 moveto 0 height rlineto stroke } for
- endClip
- /gridsize 5 def
- } def
-
- /horLines {
- udt
- doClip
- 0 gridsize height { 0 exch moveto width 0 rlineto stroke
- } for
- endClip
- /gridsize 5 def
- } def
-
- /verLines {
- udt
- doClip
- 0 gridsize width { 0 moveto 0 height rlineto stroke } for
- endClip
- /gridsize 5 def
- } def
-
- /phiHF 0 def
- /dgrad false def
- /verlaufHOR {
- cl [/r1 /g1 /b1 /r2 /g2 /b2] SET
- /r2 r2 r1 sub def
- /g2 g2 g1 sub def
- /b2 b2 b1 sub def
- gsave newpath
- initmatrix cp pathbbox grestore
- [/llx /lly /urx /ury] SET
- gsave
- clip
- newpath
- llx lly translate
- /br urx llx sub def
- /ho ury lly sub .1 add def
- phiHF 0 ne { phiHF neg rotate } if
- ho phiHF sin mul neg 0 translate
- /le ho phiHF sin mul br phiHF cos mul add def
- dgrad {
- 0 1 ho phiHF cos mul br phiHF sin mul add qual div .5 add div 2 mul 1.01 { /t exch def
- r1 t r2 mul add g1 t g2 mul add b1 t b2 mul add setrgbcolor
- 0 0 le qual rectfill 0 qual translate
- } for
- 0 1 ho phiHF cos mul br phiHF sin mul add qual div .5 add div 2 mul 1.01 { /t exch 1 sub neg def
- r1 t r2 mul add g1 t g2 mul add b1 t b2 mul add setrgbcolor
- 0 0 le qual rectfill 0 qual translate
- } for
- } {
- 0 1 ho phiHF cos mul br phiHF sin mul add qual div .5 add div 1.01 { /t exch def
- r1 t r2 mul add g1 t g2 mul add b1 t b2 mul add setrgbcolor
- 0 0 le qual rectfill 0 qual translate
- } for
- } ifelse
- grestore
- newpath
- /phiHF 0 def
- /dgrad false def
- } def
-
- /verlaufHORD { /cl [ cl 6 3 roll ] cvx def
- verlaufHOR
- /cl [ cl 6 3 roll ] cvx def } def
-
- /verlaufHORLR { /phiHF 90 def verlaufHOR } def
- /verlaufHORRL { /phiHF 90 def verlaufHORD } def
- /verlaufHORFV { /phiHF 45 def verlaufHOR } def
- /verlaufHORTH { /phiHF 30 def verlaufHOR } def
- /verlaufHORDOUB { /dgrad true def verlaufHOR } def
- /verlaufHORDOUBR { /phiHF 90 def /dgrad true def verlaufHOR } def
- /verlaufHORDOUBFV { /phiHF 45 def /dgrad true def verlaufHOR } def
-
- /verlaufFILL { /phiHF exch def /st exch def pathbbox /ury exch def /urx exch def /lly exch def /llx exch def
- gsave
- clip
- llx lly translate
- /br urx llx sub def
- /ho ury lly sub def
- phiHF neg rotate
- ho phiHF sin mul neg 0 translate
- /le ho phiHF sin mul br phiHF cos mul add def
- 0 1 ho phiHF cos mul br phiHF sin mul add st div .5 add div 1.01 { /t exch def
- t 1 1 sethsbcolor
- 0 0 le st rectfill 0 st translate
- } for
- grestore
- newpath
- } def
-
- /_sphGradPre { cl [/r1 /g1 /b1 /r2 /g2 /b2] SET
- /b2 b2 b1 sub def
- /g2 g2 g1 sub def
- /r2 r2 r1 sub def
- udt
- gsave newpath
- initmatrix cp pathbbox grestore
- [/llx /lly /urx /ury] SET
- gsave
- clip
- llx urx add 2 div lly ury add 2 div translate
- /r urx llx sub 2 div def
- /n r 1 centerR sub mul qual div cvi 1 add def
- /sc centerR 1 n div exp def
- /st centerX r mul sc div 1 sc sub mul 1 sc n exp sub div def
- } def
-
- /centerR .1 def
- /centerX .4 def
- /sphGrad {
- _sphGradPre
- 0 1 n {
- /t exch n div def
- r1 r2 t mul add
- g1 g2 t mul add
- b1 b2 t mul add
- setrgbcolor
- 0 0 r 0 360 arc fill
- st neg st translate
- sc dup scale
- } for
- grestore
- newpath
- /centerR .1 def
- /centerX .4 def
- } def
-
- /sphGrad2 { /centerR .2 def sphGrad } def
- /sphGrad3 { /centerR .3 def /centerX 0 def sphGrad } def
-
- /sphGrad4 {
- _sphGradPre
- 0 1 n {
- /t exch n div 1 sub 2 exp 1 sub neg def
- r1 r2 t mul add
- g1 g2 t mul add
- b1 b2 t mul add
- setrgbcolor
- 0 0 r 0 360 arc fill
- st neg st translate
- sc dup scale
- } for
- grestore
- newpath
- /centerR .1 def
- /centerX .4 def
- } def
-
- /sphGrad5 { /centerR .2 def sphGrad4 } def
- /sphGrad6 { /centerR .8 def /centerX 0 def sphGrad4 } def
- % END PENCIL printing Package